package reflection;

import java.lang.reflect.Field;

/**
 * Class类常用方法
 */
public class Class02 {

    public static void main(String[] args) throws Exception {

        String classAllPath="reflection.Car";

        //1 . 获取到Car类 对应的 Class对象
        //<?> 表示不确定的Java类型
        Class<?> cls = Class.forName(classAllPath);
        System.out.println(cls);    //显示对象，是哪个类的Class对象。 class reflection.Car

        //2. 得到包名
        System.out.println(cls.getPackage().getName());//包名 reflection

        //3. 得到全类名
        System.out.println(cls.getName());  //reflection.Car

        //5. 通过cls 创建对象实例
        Car car = (Car) cls.newInstance();
        System.out.println(car);//car.toString()

        //6. 通过反射获取属性 brand
        Field brandField = cls.getField("brand");
        System.out.println(brandField.get(car));//奔驰

        //7. 通过反射给属性赋值
        brandField.set(car, "宝马");
        System.out.println(brandField.get(car));//宝马

        //8.获取所有字段信息
        System.out.println("=======所有的字段属性====");
        Field[] fields = cls.getFields();
        for (Field f : fields) {
            System.out.println(f.getName());//名称
        }
    }
}
